Пульт.Онлайн /

trends_read

Чтение трендов для указанных переменных в заданном интервале времени в формате интервальной выборки

Параметры запроса

  • pult_apikey (string): API-ключ.

  • vars (array): Массив запросов. Каждый элемент массива описывает запрос тренда соответствующей переменной и должен иметь следующий формат:

      [<varname>, <time1>, <time2>, <rows>, <true_time_intervals>]
    
    • varname (string): Глобальное имя переменной.

    • time1 (uint64, опционально): Начало интервала, timestamp c миллисекундами.

    • time2 (uint64, опционально): Конец интервала, timestamp c миллисекундами.

    • rows (int, опционально): Максимальное количество возвращаемых записей одного тренда. Если параметр не задан, rows берется равным параметру max_rows в настройках сервиса trends (3000 по умолчанию).

      Если количество записей в диапазоне между time1 и time2 превышает rows, диапазон разбивается на rows отрезков и возвращаются только первые записи каждого отрезка (см. параметр true_time_intervals). Для получения гарантированного сплошного списка значений используйте API-функцию trends_log.

    • true_time_intervals (bool, опционально): Использовать равномерные временные интервалы. Параметр управляет методом выборки данных из временного ряда, если заданы time1 и time2.

      Если true_time_intervals == false (по умолчанию), выборка записей из временного ряда производится равномерно по индексам, то есть:

      • Диапазон индексов между time1 и time2 делится на rows равных отрезков.
      • Из каждого отрезка выбирается первая запись.
      • Равномерное распределение по времени не гарантируется — интервалы между временными метками могут быть неравны, если данные записывались с переменным интервалом.
      • Данный метод наиболее производительный, т.к. не зависит от количества записей в запрашиваемом временном диапазоне.

      Если true_time_intervals == true, выборка записей из временного ряда производится равномерно по времени:

      • Диапазон индексов между time1 и time2 делится на rows равных временных отрезков методом бинарного поиска.
      • Из каждого отрезка выбирается первая запись;
      • Гарантируется равномерное распределение по времени (возвращаются записи, ближайшие к границам равных временных отрезков).
      • Данный метод менее производительный, т.к. требует нескольких итераций для поиска ближайших записей.

Возвращаемые значения

  • Объект со следующей структурой:

      {
          "time1": <начало интервала>,
          "time2": <конец интервала>,
          "data": [
              [<записи по тренду для переменной_1>],
              [<записи по тренду для переменной_2>],
              ...
              [<записи по тренду для переменной_N>]
          ],
          "total": [
              <полное кол-во записей в интервале для переменной_1>,
              <полное кол-во записей в интервале для переменной_2>,
              ...
              <полное кол-во записей в интервале для переменной_N>
          ]
      }
    

    Запись по тренду представляет собой массив со следующими полями:

      [<time>,<value>,<error>]
    
    • time (uint64): время изменения переменной (смещение в мс от time1)
    • value (double): значение переменной в момент time
    • error (int16): код ошибки в момент time (если есть)

Особенности

  • Для минимизации трафика запрос и ответ определен в формате массивов
  • Первые возвращаемые записи всегда ищутся ближайшие к time1, но имеющие time < time1. Значение этих записей показывает значение переменных на момент time1.
  • Возвращаемое значение total показывает ПОЛНОЕ (а не возвращенное) количество записей в запрашиваемом диапазоне. total == возвращенное количество записей означает, что выборка записей была сплошной - возвращены все записи диапазона, без разбивки по отрезкам.

Пример

  Email
  SMS
   fdb_list
   fdb_load
   fdb_move
   fdb_paths
   node_list
   subscribe
   var_get
   var_list
   var_set